package Biblioteca;

//Clase Hilo, hereda de Thread. Mediante el metodo .start() se inicia un nuevo hilo
import java.io.File;
import GUI.BibliotecaWindow;
//de ejecucion que ejecuta .run()
//Se debe inicializar correctamente en la constructora.

/**
 * Esta clase hereda de Thread. Implementa un hilo de ejecución cuyo cometido es cargar en la biblioteca
 * una lista de archivos o directorios.
 * Uso: construír e invocar método start() de Thread
 */
public class Hilo extends Thread {

    /**
     * Biblioteca
     */
    private Biblioteca biblioteca;
    /**
     * Lista de archivos o directorios
     */
    private File[] archivos;
    /**
     * Ventana padre
     */
    private BibliotecaWindow ventana;

    /**
     * onstructora de la clase.
     * @param biblioteca Biblioteca donde se van a cargar las canciones.
     * @param f Lista de archivos / directorios.
     * @param ventana Ventana padre
     */
    public Hilo(Biblioteca biblioteca, File[] f, BibliotecaWindow ventana) {
        super();
        this.biblioteca = biblioteca;
        this.archivos = f;
        this.ventana = ventana;
    }

    /**
     * Metodo run() sobreescrito (se hereda de Thread). Es llamado cuando se invoca a start().
     * Carga en la biblioteca los archivos /directorios de la lista.
     */
    @Override
    public void run() {
        for (int i = 0; i < archivos.length; i++) {
            if (archivos[i].exists()) {
                this.biblioteca.leerDeDirectorio(archivos[i], ventana.getBarraProgreso());
            }

        }
        this.ventana.repintarArbol();
        this.ventana.getBarraProgreso().setEnabled(false);
        this.ventana.getBarraProgreso().setValue(0);
        // this.ventana.getBarraProgreso().setVisible(false);
    }
}
